import request from "./request";

/**
 * 通用GET请求
 * @param {string} url - 请求地址
 * @param {object} params - 请求参数
 * @returns {Promise}
 */
export const get = (url, params = {}) => {
  return request({
    method: "get",
    url,
    params,
  });
};

/**
 * 通用POST请求
 * @param {string} url - 请求地址
 * @param {object} data - 请求数据
 * @returns {Promise}
 */
export const post = (url, data = {}) => {
  return request({
    method: "post",
    url,
    data,
  });
};

/**
 * POST请求（application/x-www-form-urlencoded格式）
 * @param {string} url - 请求地址
 * @param {object} data - 请求数据
 * @returns {Promise}
 */
export const postForm = (url, data = {}) => {
  // 将对象转换为URLSearchParams格式
  const params = new URLSearchParams();
  Object.keys(data).forEach((key) => {
    params.append(key, data[key]);
  });

  return request({
    method: "post",
    url,
    data: params,
    headers: {
      "Content-Type": "application/x-www-form-urlencoded",
    },
  });
};

/**
 * 通用PUT请求
 * @param {string} url - 请求地址
 * @param {object} data - 请求数据
 * @returns {Promise}
 */
export const put = (url, data = {}) => {
  return request({
    method: "put",
    url,
    data,
  });
};

/**
 * 通用DELETE请求
 * @param {string} url - 请求地址
 * @param {object} params - 请求参数
 * @returns {Promise}
 */
export const del = (url, params = {}) => {
  return request({
    method: "delete",
    url,
    params,
  });
};

/**
 * 通用PATCH请求
 * @param {string} url - 请求地址
 * @param {object} data - 请求数据
 * @returns {Promise}
 */
export const patch = (url, data = {}) => {
  return request({
    method: "patch",
    url,
    data,
  });
};

// 导出默认request实例，方便直接使用
export { default } from "./request";
